﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Theme4
{
    [TestClass]
    public class DanielStepanovRectangleCheckerTest
    {
        private Theme3.RectangleChecker RecCheck;

        // Метод будет выполняться перед запуском каждого теста.
        [TestInitialize]
        public void TestInitialize()
        {
            RecCheck = new Theme3.RectangleChecker();
        }

        //Проверка Квадратов
        [TestMethod]
        public void CorrectIsoscelesTypeRectangle()
        {
            Theme3.RectangleType result = RecCheck.Check(5, 5, 90);
            Assert.AreEqual(Theme3.RectangleType.Square, result, "Не квадрат!");
        }

        // Проверка Ромбов
        [TestMethod]
        public void CorrectDegeneratedTypeRectangle()
        {
            Theme3.RectangleType result = RecCheck.Check(5, 5, 89);
            Assert.AreEqual(Theme3.RectangleType.Rhomb, result, "Не ромб!");
        }

        // Проверка Параллелограммов
        [TestMethod]
        public void CorrectEquilateralTypeRectangle()
        {
            Theme3.RectangleType result = RecCheck.Check(5, 6, 89);
            Assert.AreEqual(Theme3.RectangleType.Parallelogram, result, "Не параллелограмм!");
        }

        // Проверка Прямоугольников
        [TestMethod]
        public void CorrectRectangularTypeRectangle()
        {
            Theme3.RectangleType result = RecCheck.Check(5, 6, 90);
            Assert.AreEqual(Theme3.RectangleType.Rectangle, result, "Не прямоугольник!");
        }

        // Проверка исключений
        [TestMethod]
        [ExpectedException(typeof(ArgumentException), "Должно быть исключение для отрицательного или нулевого значения A")]
        public void A_SmallerOrEqualZeroTest()
        {
            RecCheck.Check(-6, 5, 90);
        }

        // Проверка исключений
        [TestMethod]
        [ExpectedException(typeof(ArgumentException), "Должно быть исключение для отрицательного или нулевого значения B")]
        public void B_SmallerOrEqualZeroTest()
        {
            RecCheck.Check(6, -5, 90);
        }

        // Проверка исключений
        [TestMethod]
        [ExpectedException(typeof(ArgumentException), "Должно быть исключение для отрицательного или нулевого значения Угла")]
        public void Angle_SmallerOrEqualZeroTest()
        {
            RecCheck.Check(6, 5, -90);
        }

    }
}
